// 保证事件触发后，只有在指定的延迟时间内没有再次触发，才会执行回调函数。

function _debounce(fn, delay) {
  let timer = null;

  return function (...args) {
    if (timer) clearTimeout(timer);

    timer = setTimeout(() => {
      fn.apply(this, args);
      timer = null;
    }, delay);
  };
}
